$(function () {

    var client_datagrid =  $("#client_datagrid");
    var client_dialog = $("#client_dialog");
    var client_form = $("#client_form");
    
    //给 a链接统一绑定事件
    $("a[data-cmd]").click(function(){
        var methodName = $(this).data("cmd");
        //调用方法
        methodObj[methodName]();
    });

    client_datagrid.datagrid({
        url: '/client/query.do',
        fit: true,
        fitColumns: true,
        columns: [[
            {field: 'school', title: '学校名称 ', width: 80,
                formatter: function (value) {
                    return value.name;
                }
            },
            {field: 'tel', title: '学校电话', width: 80},
            {field: 'address', title: '学校地址', width: 80},
            {field: 'importance', title: '重要性', width: 80},
            {field: 'wantedLevel', title: '意向程度', width: 80},
            {field: 'subject', title: '意向学科', width: 80},
            {field: 'state', title: '客户状态', width: 80,
                formatter: function (value) {
                    return value ? '<span style="color: red">已签约</span>' : '未签约'
                }
            },
            {field: 'contact', title: '联系人', width: 80,
                formatter: function (value) {
                    return value.name;
                }
            },
            {field: 'saleman', title: '营销人员', width: 80,
                formatter: function (value) {
                    return value.username
                }
            },
            {field: 'followupman', title: '跟进人员', width: 80,
                formatter: function (value) {
                    return value.username
                }
            },
            {field: 'beforedate', title: '上次跟进时间', width: 80},
            {field: 'afterdate', title: '下次跟进时间', width: 80},
            {field: 'followstate', title: '跟进状态', width: 80,
                formatter: function (value) {
                    return value ? '<span style="color: red">已跟进</span>' : '未跟进'
                }
            },
            {field: 'remark', title: '备注', width: 80},
            {field: 'info', title: '简介', width: 80}
        ]],
        onSelect: function (index, row) {
            //判断状态来显示按钮文字
            if (row.state) {
                $("#state_btn").linkbutton({
                    text: '取消签约'
                })
            } else {
                $("#state_btn").linkbutton({
                    text: '签约'
                })
            }
        },
        toolbar: '#client_toolbar',
        singleSelect: true,
        rownumbers: true,
        pagination: true
    });

    client_dialog.dialog({
        width: 800,
        height: 430,
        closed: true,
        resizable: false,
        buttons: [
            {
                text: '保存',
                iconCls: 'icon-save',
                handler: function () {
                    methodObj.save();
                }
            },
            {
                text: '取消',
                iconCls: 'icon-cancel',
                handler: function () {
                    methodObj.cancel();
                }
            }
        ],
        //清空表单数据
        onClose: function () {
            client_form.form('clear');
        }
    });
    //使用一个对象来统一管理实践的方法
    var methodObj = {
        add: function () {
            //弹出表格窗口
            client_dialog.dialog("open")

            //设置标题
            client_dialog.dialog('setTitle', '新增客户');
        },
        reload: function () {
            //刷新当前界面
            location.reload();
        },
        //高级查询操作
        query: function () {
            //获取查询条件的值
            var keyword = $("#keyword").textbox("getValue");
            var subjectName = $("#subjectName").combobox("getValue");

            client_datagrid.datagrid('load', {
                //发送额外的参数
                keyword: keyword,
                subjectName: subjectName
            })
        },
        //导出文件操作
        exportExl: function () {
            //获取查询条件的值
            var keyword = $("#keyword").textbox("getValue");
            var subjectName = $("#subjectName").combobox("getValue");

            var url = "/client/exportExl.do?"+ "keyword=" + keyword + "&" + "subjectName=" + subjectName
            //打开下载窗口
            window.open(url);
        },
        edit: function () {
            //判断是否选中了数据
            var row = client_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }

            $(".easyui-combobox").combobox({
                readonly: false
            })

            $(".easyui-textbox").textbox({
                readonly: false
            })

            $(".easyui-datebox").datebox({
                readonly: false
            })

            //处理学校名称数据
            row["school.id"] = row.school.id;

            //处理联系人数据
            row["contact.id"] = row.contact.id;

            //处理营销人员数据
            row["saleman.id"] = row.saleman.id;

            //处理跟进人员数据
            row["followupman.id"] = row.followupman.id;

            //选中了一条数据 回显表单数据(根据同名匹配原则 row对象中的属性名要与form中name相同才可以回显)
            client_form.form('load', row);

            //弹出表格窗口
            client_dialog.dialog("open");

            //设置标题
            client_dialog.dialog('setTitle', '编辑客户');
        },
        //保存操作
        save: function () {
            client_form.form('submit', {
                url: '/client/saveOrUpdate.do',
                success: function (data) {
                    console.log(data);
                    //转换为json对象
                    data = $.parseJSON(data);
                    if (data.success) {
                        //提示用户操作结果
                        $.messager.alert('温馨提示', '保存成功!', 'info', function () {
                            //关闭弹出框
                            methodObj.cancel();
                            // load 加载和显示第一页的所有行
                            client_datagrid.datagrid('reload')
                        })
                    } else {
                        $.messager.alert('温馨提示', data.msg, 'error')
                    }
                }
            })
        },
        //signing 签约操作
        signing: function () {
            //判断是否选中了数据
            var row = client_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }
            //弹出确认框 确认改变状态
            $.messager.confirm('确认', '确认要更改该客户签约情况么?', function (r) {
                if (r) {
                    //发送请求到后台
                    $.get("/client/signing.do", {id: row.id}, function (data) {
                        if (data.success) {
                            $.messager.alert('温馨提示', '更改成功', 'info', function () {
                                //刷新当前页面
                                client_datagrid.datagrid('reload');
                            });
                        } else {
                            $.messager.alert('温馨提示', '更改失败', 'error');
                        }
                    })
                }
            })
        },
        //look 查看操作
        look: function () {
            //判断是否选中了数据
            var row = client_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }

            $(".easyui-combobox").combobox({
                readonly: true
            })

            $(".easyui-textbox").textbox({
                readonly: true
            })

            $(".easyui-datebox").datebox({
                readonly: true
            })

            //处理学校名称数据
            row["school.id"] = row.school.id;

            //处理联系人数据
            row["contact.id"] = row.contact.id;

            //处理营销人员数据
            row["saleman.id"] = row.saleman.id;

            //处理跟进人员数据
            row["followupman.id"] = row.followupman.id;

            //选中了一条数据 回显表单数据(根据同名匹配原则 row对象中的属性名要与form中name相同才可以回显)
            client_form.form('load', row);

            //弹出表格窗口
            client_dialog.dialog("open");

            //设置标题
            client_dialog.dialog('setTitle', '查看客户');
        },
        //删除操作
        remove: function () {
            //判断是否选中了数据
            var row = client_datagrid.datagrid('getSelected');
            if (!row) {
                //如果没有选中 提示框提示信息
                $.messager.alert("温馨提示", "请选中一条数据", "warning");
                return;
            }
            //弹出确认框 确认改变状态
            $.messager.confirm('确认', '确认要删除该客户吗?', function (r) {
                if (r) {
                    //发送请求到后台
                    $.get("/client/delete.do", {id: row.id}, function (data) {
                        if (data.success) {
                            $.messager.alert('温馨提示', '删除成功', 'info', function () {
                                //刷新当前页面
                                client_datagrid.datagrid('reload');
                            });
                        } else {
                            $.messager.alert('温馨提示', '删除失败', 'error');
                        }
                    })
                }
            })
        },

        //取消操作
        cancel: function () {
            client_dialog.dialog('close');
        }
    }
});

